package com.xyq;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        List<String> names =new ArrayList<>();
        names.add("张三");
        names.add("张四");
        names.add("张五");
        names.add("张三封");
        names.add("张无及");
        names.add("张三意");
        names.add("赵说");
        names.add("赵瑞");
        names.add("赵四");
        names.add("赵五");

        List<String>  list1 = new ArrayList<>();

        names.forEach(name->{
            if(name.startsWith("张")) {
                //
                list1.add(name);
            }
        });
        List<String> list2 =new ArrayList<>();
        list1.forEach(name->{
            if(name.length()==3) {
                list2.add(name);
            }
        });
        list2.forEach(System.out::println);

        System.out.println("---------------------------");
        //1获取集合的流对象stream对象
        //2.筛选，获取符合条件的元素
       names.stream()
               .filter(s->s.startsWith("张"))
               .filter(s->s.length()==3)
               .forEach(System.out::println);
    }
    @Test
    public  void test1(){
        List<Integer> list =new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);

        //List<Integer> list1=list.stream().filter(integer -> integer%2==0).collect(Collectors.toList());

        List<Integer> list1=list.stream().filter(integer -> integer%2==0).toList();
        System.out.println(list1);

    }
    @Test
    public void test2(){ 
        List<String> list =new ArrayList<>();
        list.add("张三,23");
        list.add("张四,25");
        list.add("张五,26");
        list.add("张三封,36");

        Map<Object, Object>map =list.stream().filter(s -> {
            String[] split = s.split(",");
            int  age = Integer.parseInt(split[1]);
            return age>=25;

        }).collect(Collectors.toMap(s -> {
            String[] split = s.split(",");
            return split[0];
        }, s -> {
            String[] split = s.split(",");
            return split[1];
        }));

        map.forEach((k, v)->{
            System.out.println(k+"--"+v);
        });
    }
    @Test
    public void test3(){
     List<String> list1 =new ArrayList<>();
     list1.add("吴彦祖");
     list1.add("马林");
     list1.add("成龙");
     list1.add("黄渤");
     list1.add("邓超");
     list1.add("张学友");

     List<String> list2 =new ArrayList<>();
     list2.add("高圆圆");
     list2.add("赵丽颖");
     list2.add("杨幂");
     list2.add("杨紫");
     list2.add("迪丽热巴");

     Stream<String> stream1=list1.stream().filter(new Predicate<String>(){
         @Override
         public boolean test(String s) {
             return s.length()==3;
         }
     }).limit(2);

     Stream<String> stream2=list2.stream().filter(new Predicate<String>() {
         @Override
         public boolean test(String s) {
             return s.startsWith("杨");
         }
     }).skip(1);
     //合并
        Stream.concat(stream1,stream2).forEach(System.out::println);

    }
}
